'use strict'
// Template version: 1.2.7
// see http://vuejs-templates.github.io/webpack for documentation.

const path = require('path')
const os = require('os')

module.exports = {
   dev: {
      // Paths
      assetsSubDirectory: 'static',
      assetsPublicPath: '/',
      proxyTable: {
         '/': {
            target: 'http://127.0.0.1:8088',
            changeOrigin: true,
            pathRewrite: {
               '^/': '',
            },
         },
      },

      // Various Dev Server settings
      host: getNetworkIp(), // can be overwritten by process.env.HOST
      port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
      autoOpenBrowser: false,
      errorOverlay: true,
      notifyOnErrors: true,
      poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-

      /**
       * Source Maps
       */

      // https://webpack.js.org/configuration/devtool/#development
      devtool: 'eval-source-map',

      // If you have problems debugging vue-files in devtools,
      // set this to false - it *may* help
      // https://vue-loader.vuejs.org/en/options.html#cachebusting
      cacheBusting: true,

      // CSS Sourcemaps off by default because relative paths are "buggy"
      // with this option, according to the CSS-Loader README
      // (https://github.com/webpack/css-loader#sourcemaps)
      // In our experience, they generally work as expected,
      // just be aware of this issue when enabling this option.
      cssSourceMap: false,
   },

   build: {
      // Template for index.html
      index: path.resolve(__dirname, '../dist/index.html'),

      // Paths
      assetsRoot: path.resolve(__dirname, '../dist'),
      assetsSubDirectory: 'static',
      assetsPublicPath: '/',

      /**
       * Source Maps
       */

      productionSourceMap: false,
      // https://webpack.js.org/configuration/devtool/#production
      devtool: '#source-map',

      // Gzip off by default as many popular static hosts such as
      // Surge or Netlify already gzip all static assets for you.
      // Before setting to `true`, make sure to:
      // npm install --save-dev compression-webpack-plugin
      productionGzip: true,
      productionGzipExtensions: ['js', 'css'],

      // Run the build command with an extra argument to
      // View the bundle analyzer report after build finishes:
      // `npm run build --report`
      // Set to `true` or `false` to always turn it on or off
      bundleAnalyzerReport: process.env.npm_config_report,
   },
}

function getNetworkIp () {
   let needHost = '' // 打开的host
   try {
      // 获得网络接口列表
      let network = os.networkInterfaces()
      for (let dev in network) {
         let iface = network[dev]
         for (let i = 0; i < iface.length; i++) {
            let alias = iface[i]
            if (
               alias.family === 'IPv4' &&
               alias.address !== '127.0.0.1' &&
               !alias.internal
            ) {
               needHost = alias.address
            }
         }
      }
   } catch (e) {
      needHost = 'localhost'
   }
   return needHost
}
